/*
 * TMap Designer - A Thematic Map design software
 * Copyright (C) 2006 World Health Organization
 * http://www.who.int
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package who.tmap.ui;

import java.awt.Container;

import javax.swing.JLabel;
import javax.swing.JToggleButton;
import javax.swing.event.MouseInputListener;
import javax.swing.table.TableModel;

import who.tmap.digitizer.DigitizerEntry;
import who.tmap.toolkit.MappingToolKit;
import who.tmap.ui.cd.point.JPanelCDPoint;

/**
 * 
 * 
 * @author stl
 */
public interface UserMouseInputListener extends MouseInputListener {//, SimpleObserved {

    /**
     * @param container The container to set.
     */       
    void setContainer(Container container);
    
    /**
     * @param mtk The mapping tool kit to set.
     */
    void setMtk(MappingToolKit mtk);
    
    /**
     * @param fillOp The fillOp to set.
     */
    void setFillOp(boolean fillOp);
    
    /**
     * @param lineOp The lineOp to set.
     */
    void setLineOp(boolean lineOp);
    
    /**
     * @param ellipseOp The ellipseOp to set.
     */
    void setEllipseOp(boolean ellipseOp); 
    
    /**
     * @param rectangleOp The rectangleOp to set.
     */
    void setRectangleOp(boolean rectangleOp); 
    
    /**
     * @param triangleOp The triangleOp to set.
     */    
	public void setTriangleOp(boolean triangleOp);   
    
    /**
     * @param crossOp The crossOp to set.
     */
    void setCrossOp(boolean crossOp);    
    
    /**
     * @param imageOp The imageOp to set.
     * Not used for V0.5
     */
    void setImageOp(boolean imageOp);    
    
    /**
     * @param moveOp The moveOp to set.
     */
    void setMoveOp(boolean moveOp);
    
    /**
     * @param multiSelectOp The multiSelectOp to set.
     */
    void setMultiSelectOp(boolean multiSelectOp);
    
    /**
     * @param polygonOp The polygonOp to set.
     */
    void setPolygonOp(boolean polygonOp);
    
    /**
     * Insert a new point into an existing polygon
     * @param insertPolygonPointOp
     */
    void setInsertPolygonPointOp( boolean insertPolygonPointOp );    
    
    /**
     * 
     * @param deletePolygonPointOp
     */
    void setDeletePolygonPointOp( boolean deletePolygonPointOp );
    
    /**
     * 
     * @param useExistingBoundariesOp
     */
    void setUseExistingBoundariesOp( boolean useExistingBoundariesOp );
    
    /**
     * 
     * @param splitPolygonOp
     */
    void setSplitPolygonOp( boolean splitPolygonOp );
    
    /**
     * Find another way later
     * @param jButtonPolygon
     */
    void setJButtonPolygon( JToggleButton jButtonPolygon );
    
    /**
     * Find another way later
     * @param jButtonPolygon
     */
    void setJButtonSelect( JToggleButton jButtonSelect );    
    
    /**
     * Find another way later
     * @param jLabelCoords
     */
	void setJLabelCoords( JLabel jLabelCoords );    
    
    /**
     * @param selectOp The selectOp to set.
     */
    void setSelectOp(boolean selectOp);
    
    /**
     * @param textOp The textOp to set.
     */
    void setTextOp(boolean textOp);  
    
    /**
     * @param labelListOp 
     */
    void setLabelListOp( boolean labelListOp );
    
    void setDisputedBorderOp( boolean disputedBorderOp );
    
    void setZoomInOp( boolean zoomInOp );  
    void setZoomOutOp( boolean zoomOutOp );
    void setJLabelZoomInfo( JLabel jLabelZoomInfo );
    
    void setPointEntryOp( boolean pointEntryOp );
    void setPointEntryWithoutDescOp( boolean pointEntryWithoutDescOp );    
    void setPointEntryXColumn( String xColumn );
    void setPointEntryYColumn( String yColumn );
    
    void setDigitizerWithoutDescOp( boolean digitizerWithoutDescOp );
    void setDigitizerOp( boolean digitizerOp );
    
    /**
     * Find another way later
     * @param jPanelCDPoint
     */
    void setJPanelCDPoint( JPanelCDPoint jPanelCDPoint );
    
    void setDataTableModel( TableModel dataTableModel );    
    
    void setEditMode( int editMode );
    
    void cancelCurrentEditing();
    	 
	void processDigitizerEntry( DigitizerEntry digitizerEntry );
        
}
